dados <- read_csv("/home/marianamendes/natalie_portman/data/natalie.csv")
## Parsed with column specification:
## cols(
##   filme = col_character(),
##   bilheteria = col_double()
## )
import_data("natalie_portman")
## Loading required package: rvest
## Loading required package: xml2
## 
## Attaching package: 'rvest'
## The following object is masked from 'package:purrr':
## 
##     pluck
## The following object is masked from 'package:readr':
## 
##     guess_encoding
## Warning in rlang::eval_tidy(~as.numeric(gsub("[$|M]", "", BOXOFFICE)),
## <environment>): NAs introduced by coercion
filmes = read_imported_data()
filmes_total <- merge(filmes, dados, by.x="filme", by.y="filme")

A atriz escolhida foi Natalie Portman, uma atriz israelense, que nasceu no dia 9 de junho em 1981 (37 anos). Natalie começou a carreira muito cedo, aos 11 anos, quando atuou em The Professional no ano de 1994. Até seus 15 anos já havia participado de 5 filmes.

include_graphics('/home/marianamendes/natalie_portman/data/natalie_1996.jpg')

Até 1996 Natalie fez 5 filmes, todos eles com uma avaliação superior a 50 no RottenTomatoes, contudo com uma bilheteria não tão alta.

filmes_total %>% filter(ano < 1997) %>% ggplot(aes(x=filme, y=avaliacao)) + 
  geom_point(size=5) + 
  geom_segment(aes(x=filme, 
                   xend=filme, 
                   y=0, 
                   yend=avaliacao)) + 
  labs(title="Natalie Portman até 1996", 
       subtitle="Avaliações pelo rotten tomatoes", 
       caption="source: mpg") + 
  theme(axis.text.x = element_text(angle=40, vjust=0.8))

Star Wars e Natalie Portman - 1999!

Em 1999, quando tinha seus 18 anos, iniciou sua participação na saga Star Wars onde interpretou Padmé Amidala. O episódio I, The Phanton Menace, foi um sucesso de bilheteria, arrecadando mais de 800 milhões. Os outros dois episódios também foram bem recebidos pelo público, ambos com mais de 400 milhões nas bilheterias :). A saga foi de extrema importância para a jovem atriz, visto que foram os filmes que mais fizeram sucesso no cinema em toda sua carreira até agora.

include_graphics('/home/marianamendes/natalie_portman/data/sw.gif')

p <- filmes_total %>% count(avaliacao, bilheteria.y, ano, filme) %>% plot_ly(
  x = ~ano,
  y = ~bilheteria.y,
  color = ~avaliacao,
  text = ~filme,
  type = "bar"
) 

ggplotly(p)
## Warning: textfont.color doesn't (yet) support data arrays

## Warning: textfont.color doesn't (yet) support data arrays

A partir desse gráficos conseguimos ver (ao passar o mouse em cima das barras), que os filmes da saga Star Wars são outliers em relação às bilheterias, apesar de não terem sido tão bem avaliados no rotten tomatoes.

Através dos anos…

anos <- filmes_total %>% group_by(ano) %>% summarise(count=n(), media=mean(avaliacao), media_bi=mean(bilheteria.y))


ggplot(anos, aes(x=ano)) + 
  geom_line(aes(y=media)) + 
  labs(title="Avaliações no através dos anos", 
       subtitle="Avaliações de filmes no rotten tomatoes", 
       y="Avaliação") +  # title and caption
  theme(axis.text.x = element_text(angle = 90, vjust=0.5),  # rotate x axis text
        panel.grid.minor = element_blank())  # turn off minor grid

Tipos de filmes

Agora iremos observar as obras de forma agrupada, no gráfico abaixo conseguimos observar alguns grupos se formando…

p = filmes_total %>% 
    ggplot(aes(x = "filmes", y = bilheteria.y, label = filme)) + 
    geom_jitter(width = .05, alpha = .3, size = 3) + 
    labs(x = "")

ggplotly(p)

Usando avaliação para analisar, é possível observar 4 ou 3 grupos definidos… Iremos ver isso melhor mais adiante.

m_transformado = filmes_total %>% 
    mutate(b = log10(bilheteria.y))
summary(m_transformado %>% select(bilheteria.y, b))
##   bilheteria.y             b        
##  Min.   :      291   Min.   :2.464  
##  1st Qu.:  1143825   1st Qu.:6.057  
##  Median : 33663600   Median :7.527  
##  Mean   : 97615157   Mean   :6.602  
##  3rd Qu.: 92994200   3rd Qu.:7.967  
##  Max.   :813711800   Max.   :8.910

Agora utilizando as duas variáveis disponíveis, avaliação e bilheteria, vamos observar como os filmes se dividem melhor, em quantos grupos.

n_clusters = 3

km = m_transformado %>% 
    select(b, avaliacao) %>% 
    kmeans(centers = n_clusters, nstart = 20)

agrupado = km %>% 
    augment(m_transformado)
m_transformado = filmes_total %>% 
    mutate(bilh_scaled = as.vector(scale(log10(bilheteria.y))), 
           av_scaled = as.vector(scale(avaliacao))) 


agrupa_bilh_avaliacao<- function(df, k){
    df %>% 
        select(bilh_scaled, av_scaled) %>%
        kmeans(centers = k, 
               nstart = 20) %>% 
        augment(df) %>% 
        mutate(.cluster = as.character(.cluster))
}

agrupamentos = tibble(k = 1:6) %>% 
    mutate(agrupamento = map(k, ~ agrupa_bilh_avaliacao(m_transformado, .))) %>% 
    unnest(agrupamento)
 
agrupamentos %>%
    ggplot(aes(
        x = avaliacao,
        y = bilheteria.y,
        label = filme,
        colour = .cluster
    )) +
    geom_point(size = 2, alpha = .8) +
    facet_wrap( ~ k) +
    scale_y_log10()

Vendo as 6 representações acima é notável que utilizando 3 clusters, grupos, os filmes ficam mais bem definidos, ou seja “mais pertecentes” a um determinado conjunto de outros filmes. Agora vamos melhorar a representação usando 3 grupos.

km = m_transformado %>%
    select(bilh_scaled, av_scaled) %>%
    kmeans(centers = n_clusters, nstart = 20)

agrupado = km %>% 
    augment(m_transformado)

agrupado %>%
    ggplot(aes(x = av_scaled, y = bilh_scaled, color = .cluster))  +
    geom_point(size = 2) 

p = agrupado %>%
    ggplot(aes(x = avaliacao, y = bilheteria.y, color = .cluster, label = filme))  +
    geom_point(size = 2) +
    scale_y_log10() 

ggplotly(p)

Pronto. Usando esse gráfico podemos observar também qual pontinho representa que filme, basta colocar o mouse em cima… Agora vamos analisar.

Annihilation :D

Eating Animals :)

Mars Attacks! :|

Free Zone :(